/**
 * 文件上传
 */
function uploadProtoFile() {
    var formData = new FormData($("#protoFileForm")[0]);
    var protoFile = getFileName();
    $.ajax({
        url : '/uploadProtoFile',
        type : 'POST',
        data : formData,
        // 告诉jQuery不要去处理发送的数据
        processData : false,
        // 告诉jQuery不要去设置Content-Type请求头
        contentType : false,
        success : function(responseStr) {
            $("#uploadResult").html(responseStr);
            addProtoFileOption(protoFile);
        }
    });
}

/**
 * 动态添加 protoFile
 * @param protoFile
 */
function addProtoFileOption(protoFile) {
    var flag = true;
    $("#protoFileName option").each(function (){
        var txt = $(this).text();
        if (txt == protoFile) {
            flag = false;
        }
    });
    if (flag) {
        $("#protoFileName").append("<option value=" + protoFile + ">" + protoFile + "</option>");
    }
}

/**
 * 获取上传文件的名称
 * @returns {*|jQuery}
 */
function getFileName() {
    var protoFile = $("#protoFile").val();
    var index = protoFile.lastIndexOf("\\");
    protoFile = protoFile.substring(index + 1);
    return protoFile;
}

/**
 * 发送请求
 */
function executeHttpRequest() {
    console.log("开始执行请求！");
    var interfaceUrl = $("#interfaceUrl").val();
    if (interfaceUrl == '') {
        $("#errorMsg").html("请输入接口地址！");
        $("#errorMsg").show();
        return;
    } else {
        $("#errorMsg").hide();
    }
    // 如果数据格式为：application/x-protobuf，则需要选择或上传proto文件
    var protocolType = $("#protocolType").val();
    var protoFileName = $("#protoFileName").val();
    console.log("protocolType", protocolType);
    console.log("protoFileName", protoFileName);
    if (protocolType == 'application/x-protobuf') {
        if (protoFileName == '') {
            var protoFile = getFileName();
            if (protoFile == '') {
                $("#errorMsg").html("请选择或上传proto文件！");
                $("#errorMsg").show();
                return;
            } else {
                protoFileName = protoFile;
                $("#errorMsg").hide();
            }
        } else {
            $("#errorMsg").hide();
        }
    }

    var data = {
        "interfaceUrl" : interfaceUrl,
        "methodType" : $("#methodType").val(),
        "protocolType" : protocolType,
        "protoFileName" : protoFileName,
        "paramData" : $("#paramData").val()
    }

    $.ajax({
        type: "POST",
        url: '/executeHttpRequest',
        data: data,
        dataType: 'json',
        success: function (result) {
            console.log(result)
            $("#requestHeader").html(result.requestHeader);
            $("#requestBody").html(result.requestBody);
            $("#responseHeader").html(result.responseHeader);
            $("#responseBody").html(result.responseBody);
        }
    });
}